
//import com.zaxxer.hikari.HikariConfig;
//import com.zaxxer.hikari.HikariDataSource;
//import org.apache.ibatis.session.ExecutorType;
//import org.apache.ibatis.session.SqlSessionFactory;
//import org.mybatis.spring.SqlSessionFactoryBean;
//import org.mybatis.spring.SqlSessionTemplate;
//import org.mybatis.spring.annotation.MapperScan;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
//import org.springframework.jdbc.datasource.DataSourceTransactionManager;
//
//import java.sql.SQLException;
//
///**
// * MyBatis配置文件x
// * <p>
// * Created by Silence on 2014-12-08.
// */
//@Configuration
//@MapperScan(basePackages = "com.zhubajie.im.dao.mapper.im")
//public class DataSourceConfig {
//
//    @Value("${hikaricp.jdbc.driverClassName}")
//    String driverClassName;
//    @Value("${hikaricp.url}")
//    String url;
//    @Value("${hikaricp.username}")
//    String username;
//    @Value("${hikaricp.password}")
//    String password;
//    @Value("${hikaricp.connectionTestQuery}")
//    String connectionTestQuery;
//    @Value("${hikaricp.connectionTimeout}")
//    String connectionTimeout;
//    @Value("${hikaricp.idleTimeout}")
//    String idleTimeout;
//    @Value("${hikaricp.maxLifetime}")
//    String maxLifetime;
//    @Value("${hikaricp.maximumPoolSize}")
//    String maximumPoolSize;
//    @Value("${hikaricp.minimumIdle}")
//    String minimumIdle;
//    @Value("${hikaricp.poolName}")
//    String poolName;
//    /**
//     * 创建数据源
//     * <p>
//     * HikariDataSource 这里数据源推荐使用
//     * 1.社区活跃(如果存在任何问题,github提交issues 作者会第一时间回复)
//     * 2.springboot内置数据源
//     * 3.性能较好,bonecp作者全力支持该数据源(https://github.com/wwadge/bonecp)
//     * 测试对比:https://github.com/brettwooldridge/HikariCP
//     *
//     * @return
//     * @throws SQLException
//     */
//    @Bean
//    public HikariDataSource dataSource() throws SQLException {
//        HikariConfig hikariConfig = new HikariConfig();
//        hikariConfig.setDriverClassName(driverClassName);
//        hikariConfig.setJdbcUrl(url);
//        hikariConfig.setUsername(username);
//        hikariConfig.setPassword(password);
//        hikariConfig.setConnectionTestQuery(connectionTestQuery);
//        hikariConfig.setConnectionTimeout(Long.parseLong(connectionTimeout));
//        hikariConfig.setIdleTimeout(Long.parseLong(idleTimeout));
//        hikariConfig.setMaxLifetime(Long.parseLong(maxLifetime));
//        hikariConfig.setMaximumPoolSize(Integer.parseInt(maximumPoolSize));
//        hikariConfig.setMinimumIdle(Integer.parseInt(minimumIdle));
//        hikariConfig.setPoolName(poolName);
//        return new HikariDataSource(hikariConfig);
//    }
//
//
//    /**
//     * 创建 SqlSessionFactory
//     *
//     * @return
//     * @throws Exception
//     */
//    @Bean
//    public SqlSessionFactory sqlSessionFactory() throws Exception {
//        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
//        factoryBean.setDataSource(dataSource());
//        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/*.xml"));
//        return factoryBean.getObject();
//    }
//
//    /**
//     * 批量执行bean
//     *
//     * @return
//     * @throws Exception
//     */
//    @Bean
//    public SqlSessionTemplate sqlSessionTemplate() throws Exception {
//        return new SqlSessionTemplate(sqlSessionFactory(), ExecutorType.BATCH);
//    }
//
//    /**
//     * 事务支持
//     *
//     * @return
//     * @throws SQLException
//     */
//    @Bean
//    public DataSourceTransactionManager transactionManager() throws SQLException {
//        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
//        transactionManager.setDataSource(dataSource());
//        return transactionManager;
//    }
//
//}
